<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
// [js] 写出4个使用this的典型例子
// https://blog.csdn.net/Bule_daze/article/details/102831150

// 1⃣️ 全局 this 是 window
// 2⃣️ 函数 this 是调用者
// 3⃣️ 构造函数的 this 是 new 之后的新对象
// 4⃣️ call ，apply ，bind 的 this 是第一个参数


构造函数
function Anmai(params) {
  this.params = params
}
call，bind，apply
call 求最值
let maxNum = Math.max.call(this,5,45,120,-1)
let minNum = Math.min.call(this,5,45,120,-1)
console.log(maxNum ,minNum);
apply 求最值
const nums = [5,45,120,-1]
let maxNum = Math.max.apply(this,nums)
let minNum = Math.min.apply(this,nums)
console.log(maxNum ,minNum);
bind 使用例子
PS：本例子请在浏览器中使用

this.x = 9;    // 在浏览器中，this 指向全局的 "window" 对象
var Module = {
  x: 81,
  getX: function() { return this.x; }
};

console.log(Module.getX());// 81

var retrieveX = Module.getX;
console.log(retrieveX());
// 返回 9 - 因为函数是在全局作用域中调用的

// 创建一个新函数，把 'this' 绑定到 module 对象
// 新手可能会将全局变量 x 与 module 的属性 x 混淆
var boundGetX = retrieveX.bind(Module);
console.log(boundGetX()) // 81
</script>
</html>